import { ActionBuffers } from "../Actuators/IActionReceiver";
import { AgentInfo } from "../Agent";
import { ISensor } from "../Sensors/ISensor";


/**
 * 政策接口，用于决策智能体的行为。被Agent类调用。
 * 当代理（agent）需要决策时，它会调用IPolicy的requestDecision方法。
 */
export interface IPolicy {


    /**
     * 向大脑发送信号，表明代理需要一个决定，这个政策以后做决定是否允许批量请求
     * @param info 代理的信息
     * @param sensors 代理的传感器
     */
    requestDecision(info: AgentInfo, sensors: ISensor[]): void;

    /**
     *表明政策，如果还没有做出决定则必现立刻做出决定。预计大脑最迟会在这一点上更新代理的行为
     */
    decideAction(): ActionBuffers;
}